import http from './http';

/**
 * 用户登录
 * @param {Object} data - 登录信息
 * @param {string} data.username - 用户名
 * @param {string} data.password - 密码
 * @returns {Promise} - 登录结果，包含HTTP状态码和用户信息（token、role、userId）
 */
export const login = (data) => {
  return http.post('/user/login', data);
};

/**
 * 用户注册
 * @param {Object} data - 注册信息
 * @param {string} data.username - 用户名
 * @param {string} data.email - 电子邮箱
 * @param {string} data.password - 密码
 * @returns {Promise} - 注册结果，包含HTTP状态码
 */
export const register = (data) => {
  return http.post('/auth/register', data);
};

/**
 * 退出登录
 * @returns {Promise} - 退出结果，包含HTTP状态码
 */
export const logout = () => {
  return http.post('/auth/logout');
};

/**
 * 获取当前用户信息
 * @returns {Promise} - 用户信息，包含HTTP状态码
 */
export const getCurrentUser = () => {
  return http.get('/user/userInfo');
};

/**
 * 验证token是否有效
 * @returns {Promise} - 验证结果，包含HTTP状态码
 */
export const validateToken = (token) => {
  return http.get('/user/validateToken?token=' + token);
};

/**
 * 获取用户列表
 * @param {Object} data - 查询条件
 * @param {string} [data.name] - 用户名，支持模糊查询
 * @param {string} [data.role] - 角色，精确匹配
 * @param {string} [data.account] - 账号，支持模糊查询
 * @param {string} [data.politicalStatus] - 政治面貌，精确匹配
 * @param {number} pageNum - 页码，从1开始
 * @param {number} pageSize - 每页显示数量
 * @returns {Promise} - 用户列表，包含HTTP状态码
 */
export const getUserList = (data, pageNum, pageSize) => {
  return http.post('/user/selectPage?pageNum=' + pageNum + '&pageSize=' + pageSize, data);
};

/**
 * 获取用户总数
 * @param {Object} data - 查询条件
 * @param {string} [data.name] - 用户名，支持模糊查询
 * @param {string} [data.role] - 角色，精确匹配
 * @param {string} [data.account] - 账号，支持模糊查询
 * @param {string} [data.politicalStatus] - 政治面貌，精确匹配
 * @returns {Promise} - 用户总数，包含HTTP状态码
 */
export const getUserCount = (data) => {
  return http.post('/user/selectCount', data);
};

/**
 * 新增或更新用户
 * @param {Object} data - 用户信息
 * @param {number} [data.id] - 用户ID，有值表示更新，无值表示新增
 * @param {string} data.account - 账号
 * @param {string} data.name - 用户名
 * @param {string} data.role - 角色
 * @param {string} data.email - 邮箱
 * @param {string} data.phone - 手机号
 * @param {string} [data.pwd] - 密码，新增时必填
 * @param {string} [data.politicalStatus] - 政治面貌
 * @returns {Promise} - 操作结果，包含HTTP状态码
 */
export const saveUser = (data) => {
  return http.post('/user/insert', data);
};

/**
 * 删除用户
 * @param {number} id - 用户ID
 * @returns {Promise} - 操作结果，包含HTTP状态码
 */
export const deleteUser = (id) => {
  return http.delete('/user/deleteUser?id=' + id);
};

/**
 * 获取用户列表（备用方法，通过URL参数传递筛选条件）
 * @param {Object} data - 请求体
 * @param {number} pageNum - 页码，从1开始
 * @param {number} pageSize - 每页显示数量
 * @param {string} [politicalStatus] - 政治面貌，精确匹配
 * @returns {Promise} - 用户列表，包含HTTP状态码
 */
export const getUserListAlt = (data, pageNum, pageSize, politicalStatus) => {
  let url = `/user/selectPage?pageNum=${pageNum}&pageSize=${pageSize}`;
  return http.post(url, data);
};

export function getUserInfo(id) {
  return http.get(`/user/userInfo?id=${id}`);
}

/**
 * 修改密码
 * @param {Object} data - 密码信息
 * @param {string} data.oldPassword - 原密码
 * @param {string} data.newPassword - 新密码
 * @returns {Promise} - 修改结果，包含HTTP状态码
 */
export const changePassword = (data) => {
  return http.post('/user/update', data);
}; 